/**
 * @typedef { 'string' | 'number' | 'boolean' | 'method' | 'regexp' | 'integer' | 'float' | 'array' | 'object' | 'enum' | 'date' | 'url' | 'hex' | 'email' | 'pattern' | 'any'} RuleType
 */
/**
 * @typedef {Object} ValidateOption
 * @property {boolean} [suppressWarning] - 是否抑制警告
 * @property {boolean} [suppressValidatorError] - 是否抑制验证器错误
 * @property {boolean} [first] - 是否只验证第一个错误
 * @property {boolean|string[]} [firstFields] - 是否只显示第一个错误字段
 * @property {Partial<any>} [messages] - 自定义错误信息
 * @property {string[]} [keys] - 需要触发的规则名称，留空则验证所有规则
 * @property {function(rule: any, message: string): any} [error] - 错误处理函数
 */


/**
 * @typedef {Object} RuleItem
 * @property {RuleType} [type] - 规则类型
 * @property {boolean} [required] - 是否必填
 * @property {RegExp|string} [pattern] - 匹配模式
 * @property {number} [min] - 最小值
 * @property {number} [max] - 最大值
 * @property {number} [len] - 长度
 * @property {Array<string|number|boolean|null|undefined>} [enum] - 枚举值
 * @property {boolean} [whitespace] - 是否允许空白字符
 * @property {Record<string, Rule>} [fields] - 字段规则
 * @property {ValidateOption} [options] - 验证选项
 * @property {Rule} [defaultField] - 默认字段规则
 * @property {function(value: any): any} [transform] - 转换函数
 * @property {string|function(a?: string): string} [message] - 错误信息
 * @property {function(rule: any, value: any, callback: (error?: string|Error) => void, source: any, options: ValidateOption): void|Promise<void>} [asyncValidator] - 异步验证器
 * @property {function(rule: any, value: any, callback: (error?: string|Error) => void, source: any, options: ValidateOption): any|void} [validator] - 验证器
 */


//-----------------------------------------------------------------------------------

/**
 * @typedef {Object} formData
 * @property {*} [propName] - 属性名称
 * @property {boolean} dialogIsNew - 表单类型是否为新增
 * @property {string} curTabIndex - 表单当前tab索引
 * @default{curTabIndex:'0'}
 * @returns {boolean}
 */

/**
 * @typedef {function} computedFunc
 * @param {formData} formData - 表单值
 * @returns {boolean}
 */

/**
 * @typedef {Object} formItem
 * @property {string} label - 标签
 * @property {string} prop - 属性
 * @property {object} type - 类型
 * @property {number} span - 跨度
 * @property {any} default - 默认值
 * @property {boolean} required - 是否必填
 * @property {RuleItem[]} rule - 自定义规则
 * @property {boolean} changeValidate - 值改变立即校验
 * @property {boolean || computedFunc} disabled - 禁用
 * @property {boolean||computedFunc} show - 是否显示(不显示时属性值为默认值)
 * @property {boolean || computedFunc} weakShow - 弱显示(不显示时属性值为最后一次值)
 * @default {
 *             show:true,
 *             weakShow:true,
 *             required:true,
 *             changeValidate:false,
 *             disabled:false,
 *          }
 */

/**
 * @typedef {Object} slotFormItem
 * @property {string} slot - 插槽名称
 * @property {boolean||computedFunc} show - 是否显示
 */

/**
 * @description 创建表单配置项
 * @param formOptions {Array<formItem|slotFormItem>|Array<Array<formItem|slotFormItem>|Array<Array<Array<formItem>>>>} 表单配置项
 */
export default formOptions => formOptions
